jjzjj

Java ExecutorService 和 ThreadPoolExecutor

全部标签

java - 将 InheritableThreadLocal 与 ThreadPoolExecutor 一起使用——或者——不重用线程的 ThreadPoolExecutor

我正在尝试同时使用InheritableThreadLocal和ThreadPoolExecutor。这是因为ThreadPoolExecutor为每个池重用线程(毕竟它是一个池),这意味着InheritableThreadLocal没有按预期工作。现在这个问题对我来说似乎很明显,但追踪起来特别麻烦。我使用InheritableThreadLocal这样几个顶级进程中的每一个都有自己的数据库连接,用于它自己和它产生的任何子进程。我不只是使用一个共享连接池,因为每个顶级进程在提交到数据库和/或准备大量反复使用的PreparedStatements之前,都会对其连接进行大量多步骤工作。我在

java - 处理 ThreadPoolExecutor 的异常

我有以下代码片段,基本上扫描需要执行的任务列表,然后将每个任务交给执行程序执行。JobExecutor依次创建另一个执行器(用于执行数据库操作......读取数据并将数据写入队列)并完成任务。JobExecutor返回Future对于提交的任务。当其中一项任务失败时,我想优雅地中断所有线程并通过捕获所有异常来关闭执行程序。我需要做哪些改变?publicclassDataMovingClass{privatestaticfinalAtomicIntegeruniqueId=newAtomicInteger(0);privatestaticfinalThreadLocaluniqueNum

java - 具有无界队列的 ThreadPoolExecutor 不创建新线程

我的ThreadPoolExecutor无法创建新线程。事实上,我写了一个有点老套的LinkedBlockingQueue,它将接受任何任务(即它是无界的)但调用一个额外的处理程序-在我的应用程序中发出警告跟踪池在后面-这给了我非常明确的TPE拒绝创建新线程的信息,即使队列中有数千个条目也是如此。我的构造函数如下:privatefinalExecutorServices3UploadPool=newThreadPoolExecutor(1,40,1,TimeUnit.HOURS,unboundedLoggingQueue);为什么不创建新线程? 最佳答案

java - 为什么 ThreadPoolExecutor 的参数是 BlockingQueue?

我尝试使用创建和执行ThreadPoolExecutorintpoolSize=2;intmaxPoolSize=3;ArrayBlockingQueuequeue=newArrayBlockingQueue(2);如果我连续尝试第7、8...个任务threadPool.execute(task);队列达到最大大小后它开始抛出“RejectedExecutionException”。意味着我失去了添加这些任务。那么这里BlockingQueue如果缺少任务,它的作用是什么?意思是为什么它不等待?来自BlockingQueue的定义AQueuethatadditionallysuppor

python - 从 concurrent.futures 使用 ThreadPoolExecutor 时的 max_workers 数量?

在从concurrent.futures中决定将max_workers设置为什么时,需要考虑哪些因素?只要您期望Python3.5+可用,是否有任何理由不将max_workers设置为None,这将“默认为机器上的处理器数量,乘以5”,如此处文档中所述?https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor 最佳答案 我不认为这个问题可以如此普遍地解决;这将取决于每个案例。来自thisanswer:

python - ProcessPoolExecutor 中的 ThreadPoolExecutor

我是新来的thefuturesmodule并且有一项可以从并行化中受益的任务;但我似乎无法确切地弄清楚如何为线程设置函数和为进程设置函数。我很感激任何人都可以在这个问题上提供的帮助。我正在运行particleswarmoptimization(PSO).在不深入了解PSO本身的情况下,以下是我的代码的基本布局:有一个Particle类,带有getFitness(self)方法(计算一些指标并将其存储在self.fitness中)。一个PSO模拟有多个粒子实例(很容易超过10个;对于某些模拟,100秒甚至1000秒)。每隔一段时间,我就必须计算粒子的适应度。目前,我在for循环中执行此操

Python ThreadPoolExecutor - 是否保证回调与提交的函数在同一线程中运行?

在ThreadPoolExecutor(TPE)中,是否始终保证回调与提交的函数在同一线程中运行?例如,我使用以下代码对此进行了测试。我运行了很多次,似乎func和callback总是在同一个线程中运行。importconcurrent.futuresimportrandomimportthreadingimporttimeexecutor=concurrent.futures.ThreadPoolExecutor(max_workers=3)deffunc(x):time.sleep(random.random())returnthreading.current_thread().n

python - Tornado 与 ThreadPoolExecutor

我有使用Tornado作为http服务器和自定义http框架的设置。想法是拥有单个Tornado处理程序,每个到达的请求都应该提交给ThreadPoolExecutor并让Tornado监听新请求。一旦线程完成处理请求,就会调用回调,在执行IO循环的同一线程中向客户端发送响应。精简后的代码看起来像这样。基础http服务器类:classHttpServer():def__init__(self,router,port,max_workers):self.router=routerself.port=portself.max_workers=max_workersdefrun(self):

concurrent.futures模块ThreadPoolExecutor、ProcessPoolExecutor讲解及使用实例

导入concurrent.futures.ThreadPoolExecutorimportconcurrent.futuresconcurrent.futures模块详解这个模块是python并发执行的标准库,具有线程池和进程池、管理并行编程任务、处理非确定性的执行流程、进程/线程同步等功能。模块组成1、concurrent.futures.Executor:这是一个虚拟基类,提供了异步执行的方法。2、submit(function,argument):调度函数(可调用的对象)的执行,将argument作为参数传入。3、map(function,argument):将argument作为参数执

ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明

关于作者:CSDN内容合伙人、技术专家,从零开始做日活千万级APP。专注于分享各领域原创系列文章,擅长java后端、移动开发、人工智能等,希望大家多多支持。目录一、导读二、概览2.1为什么不推荐使用Executors去创建线程池三、使用3.1ThreadPoolExecutor3.2ScheduledThreadPoolExecutor3.2.1通过构造方法创建3.2.2通过Executors工厂方法创建3.2.3ScheduledThreadPoolExecutor与ThreadPoolExecutor异同四、推荐阅读一、导读我们继续总结学习Java基础知识,温故知新。本文讲述Schedul